package org.cuijq.thinking.in.spring.dependency.injection;

import org.cuijq.thinking.in.spring.ioc.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;

/**
 * @author by CuiJQ
 * @Classname XmlDepencySetterInjectionDemo
 * @Description XmlDepencySetterInjectionDemo Description
 * @Date 2021/6/29 9:04
 */
public class AnnotationDepencyMethodInjectionDemo {

  private UserHolder userHolder;
  @Autowired
  public void init(UserHolder userHolder){
    this.userHolder=userHolder;
  }

  public static void main(String[] args) {
      //创建BeanFactory 容器
      AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
      //注册
      applicationContext.register(AnnotationDepencyMethodInjectionDemo.class);

      XmlBeanDefinitionReader beanDefinitionReader =new XmlBeanDefinitionReader(applicationContext);
      String xmlResourcePath = "classpath:/META-INF/dependency-lookuo-context.xml";
      beanDefinitionReader.loadBeanDefinitions(xmlResourcePath);

      applicationContext.refresh();

      AnnotationDepencyMethodInjectionDemo demo =applicationContext.getBean(AnnotationDepencyMethodInjectionDemo.class);

      UserHolder userHolder= demo.userHolder;
      System.out.println(userHolder);


      applicationContext.close();
  }


  @Bean
  public UserHolder userHolder(User user){
   return new UserHolder(user);
  }
}
